October 24, 2021
그냥 리스트만 잘 사용하면 단순 구현 문제라 어렵지는 않았다. 관건은 문서를 인쇄해버리거나 맨 뒤에 추가하는 등 이동시켰을때 인덱스를 어떻게 기억할 것이냐인데, 나는 그냥 인덱스만 표시하는 리스트를 따로 만들어서 해결했다.
아니면 enumerate 함수 같은걸 사용해서 (인덱스, 문서) 형태로 튜플로 묶어서 새로운 리스트에 집어넣고 푼 사람들도 많은 것 같다.
from collections import deque
def solution(priorities, location):
deq = deque(priorities)
idx = deque([i for i in range(len(deq))]) # 인덱스를 표시해줄 리스트 생성
answer = 0
while deq:
now = deq.popleft()
i = idx.popleft()
if deq:
# 주의: 여기서 리스트가 비었는지 검증해주지 않으면 아래 max(deq)에서 런타임에러 발생
if now >= max(deq): # 남은 문서들 중 now보다 우선순위 높은 문서가 하나도 없다면
answer += 1 # 인쇄
if i == location:
return answer
else:
deq.append(now) # 대기목록 맨 마지막에 넣음
idx.append(i)
else:
answer += 1
return answer